home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 2000
/
MacHack 2000.toast
/
pc
/
The Hacks
/
Softshoe
/
Lisa's Mac Parts
/
Clipboard
/
Clipboard.cp
< prev
next >
Wrap
Text File
|
2000-06-23
|
1KB
|
94 lines
// Clipboard.cp
#ifndef Clipboard_h
#include "Clipboard.h"
#endif
#ifndef ScrapWriter_h
#include "ScrapWriter.h"
#endif
#ifndef ScrapReader_h
#include "ScrapReader.h"
#endif
Clipboard *Clipboard::unexported = 0;
Clipboard::Clipboard()
: validLink( this )
{
// Make sure the valid list is constructed first:
ValidList();
}
Clipboard::~Clipboard()
{
Assert( unexported != this );
}
ListOf< Clipboard >& Clipboard::ValidList()
{
static ListOf< Clipboard > list;
return list;
}
void Clipboard::MarkValid()
{
ValidList().Add( validLink, afterEnd );
}
void Clipboard::Validate()
{
if ( Valid() )
return;
Import( ScrapReader() );
MarkValid();
}
void Clipboard::Invalidate()
{
if ( unexported == this )
unexported = 0;
if ( Valid() )
ValidList().Remove( validLink );
Clear();
}
void Clipboard::Flush() const
{
if ( unexported == this )
{
ScrapWriter writer;
Export( writer );
writer.Approve();
unexported = 0;
}
}
void Clipboard::Changed()
{
InvalidateAll();
MarkValid();
unexported = this;
}
void Clipboard::InvalidateAll()
{
unexported = 0;
ListOf< Clipboard >& valid( ValidList() );
while ( !valid.IsEmpty() )
{
Clipboard *clip = *valid.First();
valid.Remove( clip->validLink );
clip->Clear();
}
}
void Clipboard::FlushAll()
{
if ( unexported != 0 )
unexported->Flush();
}